
import java.util.Date;
import java.text.SimpleDateFormat;

class RelatorioController {

    int total = 0;

    Date dtHoje = new Date();
    SimpleDateFormat formatador  = new SimpleDateFormat('MM/dd/yyyy');

    def index = {
        redirect(action: "controleConvenio", params: params)
    }

    def controleConvenio = {
        
        params.nome       = "";
        params.dtDataIni  = new Date() - 30;
        params.dtDataFim  = new Date();
        params.strDataIni = formatador.format(params.dtDataIni);
        params.strDataFim = formatador.format(params.dtDataFim);

        def buscaInstance = params;

        def unidadeConcedenteInstance     = new UnidadeConcedente();
        def unidadeConcedenteInstanceList = UnidadeConcedente.findAll();

        if(unidadeConcedenteInstanceList){
            total = unidadeConcedenteInstanceList.count();
        }

        return [unidadeConcedenteInstance     : unidadeConcedenteInstance,
                unidadeConcedenteInstanceList : unidadeConcedenteInstanceList,
                unidadeConcedenteInstanceTotal: total,
                buscaInstance                 : buscaInstance];
    }

    def pesquisarConvenio = {

        def buscaInstance = params;

        // verifica se algum parametro foi preenchido.
        if(params.nome || params.dtDataIni || params.dtDataFim){
            
            println(params.nome);
            
            params.max = Math.min(params.max ? params.int('max') : 10, 100);

            if (params.dtDataIni) {
                params.strDataIni = formatador.format(params.dtDataIni);
            }

            if (params.dtDataFim) {
                params.strDataFim = formatador.format(params.dtDataFim);
            }

            def unidadeConcedenteInstance = UnidadeConcedente.findAll();

            if (params.nome) {
               unidadeConcedenteInstance = UnidadeConcedente.executeQuery("SELECT u  FROM UnidadeConcedente u, Pessoa p, Colaborador c WHERE u.id = c.id AND c.id = p.id AND ( c.razaoSocial like '%" + params.nome + "%' OR p.nome like '%" + params.nome + "%' )");
            }

            if (unidadeConcedenteInstance) {
                render(view:"controleConvenio", model: [unidadeConcedenteInstance     : unidadeConcedenteInstance,
                                                        unidadeConcedenteInstanceList : unidadeConcedenteInstance,
                                                        unidadeConcedenteInstanceTotal: unidadeConcedenteInstance.count(),
                                                        buscaInstance                 : buscaInstance]);
            } else {
                flash.message = "Não foram encontradas Unidades Concedentes!";
                [unidadeConcedenteInstance     : unidadeConcedenteInstance,
                 unidadeConcedenteInstanceList : new UnidadeConcedente(),
                 unidadeConcedenteInstanceTotal: 0];
            }
        }else{

            def unidadeConcedenteInstance     = new UnidadeConcedente();
            def unidadeConcedenteInstanceList = UnidadeConcedente.findAll();

            if(unidadeConcedenteInstanceList){
                render(view:"controleConvenio", model: [unidadeConcedenteInstance     : unidadeConcedenteInstance,
                                                        unidadeConcedenteInstanceList : unidadeConcedenteInstanceList,
                                                        unidadeConcedenteInstanceTotal: unidadeConcedenteInstance.count(),
                                                        buscaInstance                 : buscaInstance]);
            }else{
                flash.message = "Não foram encontradas Unidades Concedentes!";
                [unidadeConcedenteInstanceList : new UnidadeConcedente(),
                 unidadeConcedenteInstanceTotal: 0];
            }
        }
    }

    def controleTCE = {
        
        params.nome       = "";
        params.dtDataIni  = new Date() - 30;
        params.dtDataFim  = new Date();
        params.strDataIni = formatador.format(params.dtDataIni);
        params.strDataFim = formatador.format(params.dtDataFim);

        def buscaInstance = params;

        def tceInstance     = new Tce();
        def tceInstanceList = Tce.findAll();

        if(tceInstanceList){
            total = tceInstanceList.count();
        }

        return [tceInstance     : tceInstance,
                tceInstanceList : tceInstanceList,
                tceInstanceTotal: total,
                buscaInstance   : buscaInstance];
    }

    def pesquisarTCE = {

        def buscaInstance = params;

        // verifica se algum parametro foi preenchido.
        if(params.nome || params.dtDataIni || params.dtDataFim) {
            
            println(params.nome);
            
            params.max = Math.min(params.max ? params.int('max') : 10, 100);

            if (params.dtDataIni) {
                params.strDataIni = formatador.format(params.dtDataIni);
            }

            if (params.dtDataFim) {
                params.strDataFim = formatador.format(params.dtDataFim);
            }

            def tceInstance = Tce.createCriteria();

            def tceInstanceList = tceInstance.list() {
                if (params.nome) { like("supNome", params.nome) }
                if (params.dtDataIni && params.dtDataFim){ between("dtFim", params.dtDataIni, params.dtDataFim) }
                maxResults(1)
                order("dtFim", "desc")
            };
            
            if (tceInstance) {
                render(view:"controleTCE", model: [tceInstance     : tceInstance,
                                                   tceInstanceList : tceInstanceList,
                                                   tceInstanceTotal: tceInstanceList.count(),
                                                   buscaInstance   : buscaInstance]);
            } else {
                flash.message = "Não foram encontrados TCEs!";
                [tceInstance     : tceInstance,
                 tceInstanceList : new Tce(),
                 tceInstanceTotal: 0];
            }
            
        } else {

            def tceInstance     = new Tce();
            def tceInstanceList = Tce.findAll();

            if(tceInstanceList){
                render(view:"controleConvenio", model: [tceInstance     : tceInstance,
                                                        tceInstanceList : tceInstanceList,
                                                        tceInstanceTotal: tceInstance.count(),
                                                        buscaInstance   : buscaInstance]);
            }else{
                flash.message = "Não foram encontradas Unidades Concedentes!";
                [tceInstanceList : new Tce(),
                 tceInstanceTotal: 0];
            }
        }
    }
}
